"""
用Shell通配符匹配字符串

问题：
    你想使用 Unix Shell 中常用的通配符(比如 *.py , Dat[0-9]*.csv 等)去匹配文本字符串。
解决方案：
    fnmatch 模块提供了两个函数—— fnmatch() 和 fnmatchcase() ，可以用来实现这样的匹配。
"""

from fnmatch import fnmatch, fnmatchcase


def use_fnmatch():
    print(fnmatch("money_love.c", "*.c"))
    print(fnmatch("money_love.c", "?love.c"))
    print(fnmatch("money_love89757.c", "money_love[0-9]*.c"))
    # 输出结果：
    """
    True
    False
    True
    """

    names = ["money_love258.c", "money_love.c", "money_love89757.c", "money_love168.c"]
    names = [name for name in names if fnmatch(name, "money_love[0-9]*.c")]
    print(names)
    # 输出结果：
    """
    ['money_love258.c', 'money_love89757.c', 'money_love168.c']
    """

    # 对大小写敏感
    print(fnmatch("money_love.c", "*.c"))
    print(fnmatchcase("Money_Love123.c", "Money_Love[0-9]*.C"))
    # 输出结果：
    """
    True
    False
    """


if __name__ == '__main__':
    use_fnmatch()
